#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Generic;
using Cephei.QL.Termstructures;
using Cephei.QL;
using Cephei.QL.Math;
namespace Cephei.QL.Processes
{
     // <summary> 
	// ! This class describes the square root stochastic volatility process incl jumps governed by \f[ \begin{array}{rcl} dS(t, S)  &=& (r-d-\lambda m) S dt +\sqrt{v} S dW_1 + (e^J - 1) S dN \\ dv(t, S)  &=& \kappa (\theta - v) dt + \sigma \sqrt{v} dW_2 \\ dW_1 dW_2 &=& \rho dt \\ \omega(J) &=& \frac{1}{\sqrt{2\pi \delta^2}} \exp\left[-\frac{(J-\nu)^2}{2\delta^2}\right] \end{array} \f]  \ingroup processes
	// </summary>
    [Guid ("9B34D343-C9D9-4cf8-9FE1-871D14051368"),ComVisible(true)]
	public interface IBatesProcess : Cephei.QL.Processes.IHestonProcess
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        
		 Double Delta {get;}
        
		 UInt64 Factors {get;}
        
		 Double Lambda {get;}
        
		 Double Nu {get;}
    }

    // <summary> 
	// ! This class describes the square root stochastic volatility process incl jumps governed by \f[ \begin{array}{rcl} dS(t, S)  &=& (r-d-\lambda m) S dt +\sqrt{v} S dW_1 + (e^J - 1) S dN \\ dv(t, S)  &=& \kappa (\theta - v) dt + \sigma \sqrt{v} dW_2 \\ dW_1 dW_2 &=& \rho dt \\ \omega(J) &=& \frac{1}{\sqrt{2\pi \delta^2}} \exp\left[-\frac{(J-\nu)^2}{2\delta^2}\right] \end{array} \f]  \ingroup processes Factory
	// </summary>
   	[ComVisible(true)]
    public interface IBatesProcess_Factory // : Collection_Factory<IBatesProcess, ICell<IBatesProcess>>
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        
	    IBatesProcess Create (Cephei.QL.Termstructures.IYieldTermStructure riskFreeRate, Cephei.QL.Termstructures.IYieldTermStructure dividendYield, Cephei.QL.IQuote s0, Double v0, Double kappa, Double theta, Double sigma, Double rho, Double lambda, Double nu, Double delta, Microsoft.FSharp.Core.FSharpOption<QL.Processes.HestonProcess.DiscretizationEnum> d);
    }
}

